simulated annealing python